package com.fattyCorps.common.obj.config;

import com.fattyCorps.common.enums.battle.prop.EStaticProp;
import com.fattyCorps.common.enums.battle.EBehaviorEffectType;
import com.fattyCorps.common.enums.battle.EBehaviorType;
import com.fattyCorps.common.enums.battle.calc.ECalcType;
import com.fattyCorps.common.enums.battle.calc.EMaxDynamicCalcType;
import com.fattyCorps.common.enums.battle.prop.EDynamicProp;
import lombok.Data;

@Data
public class BehaviorEffectMould extends BaseCfg {
    private String name;
    private Integer sort = 0;
    private Integer triggerConditionId = 0;
    private EBehaviorEffectType type;   // 结果类型
    private EBehaviorType counterBehaviorType = EBehaviorType.None; // 互斥的类型

    private String incDamageValue;  // 增加伤害值

    private EStaticProp staticCalcProp;     // 修改静态属性类型（resultType为修改静态属性有效）取值范围：攻击/护甲/最大生命/暴击...
    private ECalcType staticCalcType;     // 修改静态属性计算类型（resultType为修改静态属性有效）取值范围：百分比/固定数值
    private String staticCalcValue;    // 修改静态属性数值（resultType为修改静态属性有效）
    private ECalcType maxStaticCalcType;  // 修改静态属性最大值计算类型（resultType为修改静态属性有效）取值范围：百分比/固定数值
    private String maxStaticCalcValue; // 修改静态属性最大数值（resultType为修改静态属性有效）

    private EDynamicProp dynamicCalcTargetProp = EDynamicProp.Hp;  // 要修改动态属性类型（resultType为修改动态属性有效）取值范围：当前hp/当前能量
    private EStaticProp dynamicCalcSrcProp = EStaticProp.Att;     // 计算属性类型（resultType为修改动态属性有效）取值范围：（自己的）攻击/护甲/最大生命/暴击/已损失生命/当前生命...
    private ECalcType dynamicCalcType;    // 修改动态属性计算类型（resultType为修改动态属性有效 取值范围：百分比/固定数值
    private String dynamicCalcValue;   // 修改动态属性数值（resultType为修改动态属性有效）
    private EMaxDynamicCalcType maxDynamicCalcType; // 修改动态属性最大值计算类型（resultType为修改动态属性有效）取值范围：施法者攻击百分比/施法者最大血量百分比/目标攻击百分比/目标血量上限百分比/目标当前血量百分比/目标已损失血量百分比/固定数值
    private String maxDynamicCalcValue;// 修改动态属性最大数值（resultType为修改动态属性有效）
    private Integer buffDuration;   // buff持续回合(时间)（resultType为增加buff有效）取值范围1~15
    private Integer buffId;         // buff的id（type为增加buff有效）
    private Integer behaviorId;     // 行为id（type为触发另一行为时有效）
}
